package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class AdmPersistenciaEmpleado {
	private static AdmPersistenciaEmpleado instancia;
	
	public static AdmPersistenciaEmpleado getInstancia(){
		if(instancia == null)
			return new AdmPersistenciaEmpleado();
		return instancia;
	}
	
	public long selectIdPorUsuario(String usuario){
		System.out.println("LOG: AdmPersistenciaEmpleado / selectIdPorUsuario [INICIO]");
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select id_emp from empleado where usuario = ?");
			ps.setString(1,usuario);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				return rs.getLong(1);
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaEmpleado / selectIdPorUsuario [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return (long)-1;
	}

	public String[] selectRecursoBusqueda(String jerarquia, String rol) {
		System.out.println("LOG: AdmPersistenciaEmpleado / selectRecursosBusqueda [INICIO]");
		String[] empleados = new String[100];
		int i=0;
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select e.nombre, e.apellido from empleado e, emp_rol_jer erj, jerarquia j, rol r where j.nombre = ? and r.nombre = ? and r.id_rol = erj.id_rol  and j.id_jer = erj.id_jer and e.id_emp = erj.id_emp and e.id_emp in (select id_emp from proyecto_empleado where fecha_fin is null) ");
			ps.setString(1,jerarquia);
			ps.setString(2, rol);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				empleados[i]= rs.getString(1)+" "+rs.getString(2);
				i++;
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaEmpleado / selectRecursosBusqueda [FIN]");
		}catch(Exception e){
			System.out.println("hola");
			System.out.println(e.getMessage());
		}
		return empleados;		
	}

	public Long selectPerfil(Long idEmpl) {
		System.out.println("LOG: AdmPersistenciaEmpleado / selectPerfil [INICIO]");
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select id_per from empleado where id_emp = ?");
			ps.setLong(1,idEmpl);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				return rs.getLong(1);
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaEmpleado / selectPerfil [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return (long)-1;
	}

	public boolean validate(Long clave, String usuario) {
		System.out.println("LOG: AdmPersistenciaEmpleado / selectPerfil [INICIO]");
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select * from empleado where usuario = ? and clave = ?");
			ps.setString(1,usuario);
			ps.setLong(2,clave);
			ResultSet rs = ps.executeQuery();
			if(rs.next()){
				con.close();
				return true;
			}			
			System.out.println("LOG: AdmPersistenciaEmpleado / selectPerfil [FIN]");
			return false;
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return false;
		
	}

	
}
